'\" t
.TH "NSS\-MYHOSTNAME" "8" "" "systemd 254" "nss-myhostname"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
nss-myhostname, libnss_myhostname.so.2 \- Hostname resolution for the locally configured system hostname
.SH "SYNOPSIS"
.PP
libnss_myhostname\&.so\&.2
.SH "DESCRIPTION"
.PP
\fBnss\-myhostname\fR
is a plug\-in module for the GNU Name Service Switch (NSS) functionality of the GNU C Library (\fBglibc\fR), primarily providing hostname resolution for the locally configured system hostname as returned by
\fBgethostname\fR(2)\&. The precise hostnames resolved by this module are:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The local, configured hostname is resolved to all locally configured IP addresses ordered by their scope, or \(em if none are configured \(em the IPv4 address 127\&.0\&.0\&.2 (which is on the local loopback) and the IPv6 address ::1 (which is the local host)\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The hostnames
"localhost"
and
"localhost\&.localdomain"
(as well as any hostname ending in
"\&.localhost"
or
"\&.localhost\&.localdomain") are resolved to the IP addresses 127\&.0\&.0\&.1 and ::1\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The hostname
"_gateway"
is resolved to all current default routing gateway addresses, ordered by their metric\&. This assigns a stable hostname to the current gateway, useful for referencing it independently of the current network configuration state\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
The hostname
"_outbound"
is resolved to the local IPv4 and IPv6 addresses that are most likely used for communication with other hosts\&. This is determined by requesting a routing decision to the configured default gateways from the kernel and then using the local IP addresses selected by this decision\&. This hostname is only available if there is at least one local default gateway configured\&. This assigns a stable hostname to the local outbound IP addresses, useful for referencing them independently of the current network configuration state\&.
.RE
.PP
Various software relies on an always\-resolvable local hostname\&. When using dynamic hostnames, this is traditionally achieved by patching
/etc/hosts
at the same time as changing the hostname\&. This is problematic since it requires a writable
/etc/
file system and is fragile because the file might be edited by the administrator at the same time\&. With
\fBnss\-myhostname\fR
enabled, changing
/etc/hosts
is unnecessary, and on many systems, the file becomes entirely optional\&.
.PP
To activate the NSS modules, add
"myhostname"
to the line starting with
"hosts:"
in
/etc/nsswitch\&.conf\&.
.PP
It is recommended to place
"myhostname"
after
"file"
and before
"dns"\&. This resolves well\-known hostnames like
"localhost"
and the machine hostnames locally\&. It is consistent with the behaviour of
\fBnss\-resolve\fR, and still allows overriding via
/etc/hosts\&.
.PP
Please keep in mind that
\fBnss\-myhostname\fR
(and
\fBnss\-resolve\fR) also resolve in the other direction \(em from locally attached IP addresses to hostnames\&. If you rely on that lookup being provided by DNS, you might want to order things differently\&.
.SH "EXAMPLE"
.PP
Here is an example
/etc/nsswitch\&.conf
file that enables
\fBnss\-myhostname\fR
correctly:
.sp
.if n \{\
.RS 4
.\}
.nf
passwd:         compat systemd
group:          compat [SUCCESS=merge] systemd
shadow:         compat systemd
gshadow:        files systemd


hosts:          mymachines resolve [!UNAVAIL=return] files \fBmyhostname\fR dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis
.fi
.if n \{\
.RE
.\}
.PP
To test, use
\fBglibc\fR\*(Aqs
\fBgetent\fR(1)
tool:
.sp
.if n \{\
.RS 4
.\}
.nf
$ getent ahosts `hostname`
::1       STREAM omega
::1       DGRAM
::1       RAW
127\&.0\&.0\&.2       STREAM
127\&.0\&.0\&.2       DGRAM
127\&.0\&.0\&.2       RAW
.fi
.if n \{\
.RE
.\}
.PP
In this case, the local hostname is
\fIomega\fR\&.
.SH "SEE ALSO"
.PP
\fBsystemd\fR(1),
\fBnss-systemd\fR(8),
\fBnss-resolve\fR(8),
\fBnss-mymachines\fR(8),
\fBnsswitch.conf\fR(5),
\fBgetent\fR(1)
